From 23abfb62a55126bd35588747dcaaa55c6541e80f Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Wed, 8 Mar 2006 11:48:34 +0100 Subject: [PATCH] Add some bounds checking to values passed when changing the period and slice of a domain using the sedf scheduler. Signed-off-by: Ryan Harper --- xen/common/sched_sedf.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/xen/common/sched_sedf.c b/xen/common/sched_sedf.c index 38594e0461..994ecdfd8e 100644 --- a/xen/common/sched_sedf.c +++ b/xen/common/sched_sedf.c @@ -57,6 +57,12 @@ #define WEIGHT_PERIOD (MILLISECS(100)) #define WEIGHT_SAFETY (MILLISECS(5)) +/* FIXME: need to validate that these are sane */ +#define PERIOD_MAX ULONG_MAX +#define PERIOD_MIN (MICROSECS(10)) +#define SLICE_MAX ULONG_MAX +#define SLICE_MIN (MICROSECS(5)) + #define IMPLY(a, b) (!(a) || (b)) #define EQ(a, b) ((!!(a)) == (!!(b))) @@ -1609,7 +1615,10 @@ static int sedf_adjdom(struct domain *p, struct sched_adjdom_cmd *cmd) * Sanity checking: note that disabling extra weight requires * that we set a non-zero slice. */ - if ( (cmd->u.sedf.slice == 0) || + if ( (cmd->u.sedf.period > PERIOD_MAX) || + (cmd->u.sedf.period < PERIOD_MIN) || + (cmd->u.sedf.slice > SLICE_MAX) || + (cmd->u.sedf.slice < SLICE_MIN) || (cmd->u.sedf.slice > cmd->u.sedf.period) ) return -EINVAL; EDOM_INFO(v)->weight = 0; -- 2.30.2